package me.ydq.core.sql;

import me.ydq.core.SqlSpec;

import java.util.List;
import java.util.function.Consumer;

public interface SqlOr<T> {

    SqlSpec<T> or(List<Consumer<SqlSpec<T>>> builders);

    default SqlSpec<T> or(Consumer<SqlSpec<T>> or1) {
        return or(List.of(or1));
    }

    default SqlSpec<T> or(Consumer<SqlSpec<T>> or1, Consumer<SqlSpec<T>> or2) {
        return or(List.of(or1, or2));
    }

    default SqlSpec<T> or(Consumer<SqlSpec<T>> or1, Consumer<SqlSpec<T>> or2, Consumer<SqlSpec<T>> or3) {
        return or(List.of(or1, or2, or3));
    }

    default SqlSpec<T> or(Consumer<SqlSpec<T>> or1, Consumer<SqlSpec<T>> or2, Consumer<SqlSpec<T>> or3, Consumer<SqlSpec<T>> or4) {
        return or(List.of(or1, or2, or3, or4));
    }

    default SqlSpec<T> or(Consumer<SqlSpec<T>> or1, Consumer<SqlSpec<T>> or2, Consumer<SqlSpec<T>> or3, Consumer<SqlSpec<T>> or4, Consumer<SqlSpec<T>> or5) {
        return or(List.of(or1, or2, or3, or4, or5));
    }

}
